package com.jensen.util.page;

import org.apache.ibatis.session.RowBounds;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Jensen on 2016/10/27.
 */
public class Page<E> extends ArrayList<E> {

    public static final int NO_SQL_COUNT=-1;
    public static final int SQL_COUNT=0;

    private int pageNum;
    private int pageSize;
    private int startRow;
    private int endRow;
    private long total;
    private int pages;

    public Page(int pageNum,int pageSize){
        this(pageNum,pageSize,SQL_COUNT);
    }

    public Page(int pageNum,int pageSize,int total){
        super(pageSize);
        this.pageNum=pageNum;
        this.pageSize=pageSize;
        this.total=total;
        this.startRow=pageNum>0?(pageNum-1)*pageSize:0;
        this.endRow=pageNum*pageSize;
    }

    public Page(RowBounds rowBounds,int total){
        super(rowBounds.getLimit());
        this.pageSize=rowBounds.getLimit();
        this.startRow=rowBounds.getOffset();
        this.total=total;
        this.endRow=this.startRow+this.pageSize;
    }

    public List<E> getResult(){
        return this;
    }

    public int getPageNum() {
        return pageNum;
    }

    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getStartRow() {
        return startRow;
    }

    public void setStartRow(int startRow) {
        this.startRow = startRow;
    }

    public int getEndRow() {
        return endRow;
    }

    public void setEndRow(int endRow) {
        this.endRow = endRow;
    }

    public long getTotal() {
        return total;
    }

    public void setTotal(long total) {
        this.total = total;
    }

    public int getPages() {
        return pages;
    }

    public void setPages(int pages) {
        this.pages = pages;
    }

    @Override
    public String toString() {
        return "Page{" +
                "pageNum=" + pageNum +
                ", pageSize=" + pageSize +
                ", startRow=" + startRow +
                ", endRow=" + endRow +
                ", total=" + total +
                ", pages=" + pages +
                '}';
    }
}
